#!/bin/bash
# redis 快捷docker安装运行
# 创建目录并移动脚本的函数
function createStart() {
  local dockerVolumes="$1"
  local name="$2"
  local port="$3"
  local scriptName="${name}.sh"
  local destination="/${dockerVolumes}/${name}/"
  rm -rf "${destination}"
  # 为脚本添加执行权限
  chmod +x "${scriptName}"

  # 使用 mkdir -p 创建父目录（如果不存在）
  mkdir -p "${destination}"

  # 删除已存在的脚本文件
  [ -f "/${dockerVolumes}/${name}/${scriptName}" ] && rm -rf "/${dockerVolumes}/${name}/${scriptName}"

  # 在移动之前检查脚本文件是否存在
  if [ -f "${scriptName}" ]; then
    cp "${scriptName}" "/${dockerVolumes}/${name}/"
    #cp "nacos_config.sql" "/${dockerVolumes}/${name}/"
    #nacos_config
    echo "脚本 '${scriptName}' 已复制到 '/${dockerVolumes}/${name}/'"
  else
    echo "错误：当前目录中找不到脚本 '${scriptName}'"
    exit 1
  fi
}

function dockerCreateStart() {
  name="$1"
  version="$2"
  asName="$3"
  portMap=$4
  volumesMap=$5
  dockerMap=$6
  copyDockerMap=$7
  #lastDockerMap=$8

  # 取消注释以下一行，如果想要拉取 Docker 镜像
  #docker pull "${name}:${version}"

  # 删除同名容器
  docker rm -f "${asName}" &>/dev/null

  dockerRun="docker run"
  dockerRunTemp="docker run"

  # 添加端口映射参数
  for element in "${portMap[@]}"; do
    dockerRun+=" -p $element"
    dockerRunTemp+=" -p $element"
  done

  # 添加其他 Docker 参数
  for element in "${dockerMap[@]}"; do
    dockerRun+=" $element"
    dockerRunTemp+=" $element"
  done

  # 添加卷映射参数
  for element in "${volumesMap[@]}"; do
    dockerRun+=" -v $element"
    # dockerRunTemp+=" -v $element"
  done

  dockerRun+=" ${name}:${version}"
  dockerRunTemp+=" ${name}:${version}"

  #for element in "${lastDockerMap[@]}"; do
  #    dockerRun+=" $element"
  #    dockerRunTemp+=" $element"
  #done
  echo "$dockerRunTemp " #${name}:${version}
  $dockerRunTemp         #"${name}:${version}"

  echo "复制 开始"
  # 复制 Docker 映射文件
  for element in "${copyDockerMap[@]}"; do
    echo "复制 $element"
    IFS=':' read -r source dest <<<"$element"
    echo "docker cp ${asName}:${source} ${dest}"
    docker cp "${asName}":"${source}" "${dest}"
  done

  echo "复制 完成"
  # 删除同名容器
  docker rm -f "${asName}" &>/dev/null
  echo "正式启动挂载"
  echo "$dockerRun " #${name}:${version}
  $dockerRun         #"${name}:${version}"

  #read -r -p "查看 $name 运行日志?【Y/N】" input
  #if[ "$input,," =~ ^(YES|Y)$ ];then
  #    docker logs -f -t ${asName}
  #else
  #    echo ""
  #fi

}
function main() {
#  docker run -d \
#  --name=nexus3 -p 8081:8081 --privileged=true \
#  -e INSTALL4J_ADD_VM_PARAMS="-Xms512M -Xmx512M -XX:MaxDirectMemorySize=512M" \
#  sonatype/nexus3
#  sudo docker cp nexus3:/nexus-data /docker-volumes/nexus/8081
  sudo -s
  mkdir -r /docker-volumes/nexus/8081/nexus-data/
  docker run -p 8081:8081 --privileged=true -d \
  --name=nexus3 \
  -v /docker-volumes/nexus/8081/nexus-data/:/nexus-data \
  -e INSTALL4J_ADD_VM_PARAMS="-Xms512M -Xmx512M -XX:MaxDirectMemorySize=512M" \
  sonatype/nexus3
  exit
}
main
